#ifndef VXDOCKCONTAINER_H
#define VXDOCKCONTAINER_H

#include <QtGui>

class VxDockCouple : public QObject
{
	Q_OBJECT
public:
	VxDockCouple(QPushButton * button, QDockWidget * widget);

	inline QWidget * button() const	{
		return _button;
	};

	inline QDockWidget * widget() const	{
		return _widget;
	};

	inline QSize buttonSize() const	{
		return _buttonSize;
	};

	inline void setArea(Qt::DockWidgetArea area){
		_area = area;
	}

private:
	QWidget * _button;
	QDockWidget * _widget;
	QSize _buttonSize;
	Qt::DockWidgetArea _area;

private slots:
	void _placeWidget();

signals:
	void reorderButtons();
};




typedef QVector<VxDockCouple *> VectorCouples;

class VxDockContainer : public QWidget
{

	Q_OBJECT

public:

	VxDockContainer(QWidget * parent);

	void addCouple(VxDockCouple * couple);

	void showByOrientation(Qt::DockWidgetArea area, bool animFromCurrent=false);


private:
	VectorCouples _couples;
	bool _hidden;
	bool _showAnimated;
	Qt::DockWidgetArea _currentArea;

private slots:
	void _mouseReleasedMove(QPoint);
	void _animationShowFinished();

public slots:
	void hideAll();

};

#endif // VXDOCKCONTAINER_H

